草庐IT

c++ - Swig -includeall 除了...

全部标签

c++ - 大于 100,000 的随机数

我正在用C/C++编写代码,我想创建很多大于100,000的随机数。我会怎么做?使用rand(); 最佳答案 您不会使用rand来做到这一点,但是使用更新的C++附带的适当的随机数生成器,请参见例如cppreference.com.constintmin=100000;constintmax=1000000;std::default_random_enginegenerator;std::uniform_int_distributiondistribution(min,max);intrandom_int=distribution(

c++ - C/C++ 中的 typedef 是否真的通过组合复合类型(例如 int*)来创建新类型?

最近我发现我代码中的typedef与我建议的完全不同。像这样的例子:typedefint*ptype;ptypev1=0,v2=0;结果:v1和v2都被定义为指向int类型的指针。但是,如果您只是将第二句中的ptype替换为int*为int*v1=0,v2=0;或int*v1=0,v2=0;,只有v1是指针,v2是普通的int。typedef似乎没有做简单的替换。更重要的是,当涉及到像这样的复杂修饰符时:typedefint*ptype;constptypev3=0;结果将是:如果我们写constint*v3=0;。在上面的代码中,const代表整个ptype的修饰符,而不是ptype

c++ - 通过指向指针的指针访问结构元素的地址

假设我有一个结构:structABC{chara;charb;charc;}我可以将指向上述结构的指针声明为:结构ABC**abc现在abc是一个指向结构指针*abc的指针,而*abc是一个指向结构的结构指针美国广播公司。因此;sizeof(**abc)将为4,sizeof(*abc)也将为4而sizeof(abc)将为3(考虑指针大小为4个字节,字符大小为1个字节)。我的问题是:如何使用上面声明的abc声明一个指向成员变量c的字符指针? 最佳答案 sizeof(**abc)willbe4,sizeof(*abc)willalsob

c++ - 在编译代码中包含一个大文本变量是个好主意吗?

我正在编写一个为用户生成格式化文件的程序,但它不仅生成格式化文件,它还做了更多。我想向最终用户分发一个二进制文件,当用户运行该程序时,它会为用户生成具有适当数据的xml文件。为了实现这一点,我想将文件内容提供给一个用代码编译的char数组变量。当用户运行程序时,我会把char文件写出来,为用户生成一个xml文件。char*buffers="axmlformatfilecontents,\thisrepresentmanyblocktext\fromafile,...";我有两个问题。Q1。对于如何将我的文件内容编译成二进制文件,即作为一个二进制文件分发,您有任何其他想法吗?Q2。如上所

c++ - 这个函数的参数在哪里?

void*(*proto_type(longint,char*b))(constchar*b,unsignedshortintd);返回类型是void*,proto_type是函数名?或者这是指向函数的指针?哪些是参数:(longint,char*b)或这个(constchar*b,unsignedshortintd)请解释一下这个函数是如何工作的。 最佳答案 void*(*proto_type(longint,char*b))(constchar*b,unsignedshortintd);这是一个函数声明。函数名为proto_ty

c++ - 是否可以访问物理地址0?

在C/C++中,不允许访问地址为0的数据。但是,物理内存是从0开始编号的。在DOS时代,中断vector表位于物理地址0。第一个中断vector是被零除异常的处理程序。我的问题是:什么情况下允许访问物理地址0? 最佳答案 要访问物理地址零,这取决于您所使用的平台。该语言不知道底层寻址模型,它取决于操作系统。在裸机环境中,如果启用了分页,您可以完全控制页表,或者如果未启用分页,则只取消引用零。在某些Unix和Linux变体上,您执行mmap并且可能还打开/dev/mem以获取逻辑地址非零但物理地址为零的非空指针,它可能需要一些访问权限

c++ - 为什么我可以在 C 中调用函数而不声明它,但不能在 C++ 中调用?

在C++中,在函数声明之前调用它是一个编译器错误。但在C中,它可能会编译。#includeintmain(){foo();//foo()iscalledbeforeitsdeclaration/definition}intfoo(){printf("Hello");return0;}我试过并且知道它是正确的,但我无法理解背后的原因。任何人都可以解释编译过程实际上是如何发生的以及两种语言的不同之处。 最佳答案 事实是代码“编译”为c程序并不意味着你可以做到。编译器应该警告函数foo()的隐式声明。在这种特殊情况下,隐式声明将声明一个相

c++ - arr[0] 的大小怎么是 8 个字节?

我正在浏览寻找一种方法来查找给定矩阵中的行数和列数,而无需任何其他信息,我找到了这个答案。Givenamatrix,findnumberofrowsandcolumns这是上述问题的第二个答案的代码片段:intmain(){floata[9][2]={{0,1},{1,1}};introw=(sizeof(a)/sizeof(a[0]));intcol=(sizeof(a)/sizeof(a[0][0]))/row;printf("%d\n",row);printf("%d\n",col);return0;}sizeof(a[0])是怎么变成8的?在我的理解中,指针的通用大小在32位架

c++ - 编译器是否优化对常量变量的引用?

当谈到C和C++语言时,编译器是否优化了对常量变量的引用,以便程序自动知道所引用的值是什么,而不必查看常量变量的内存位置?说到数组,是否取决于数组中指向的索引值在编译时是否为常量?例如,看一下这段代码:intmain(void){1:chartesst[3]={'1','3','7'};2:charerm=tesst[1];}编译器是否在编译时将第2行“更改”为“charerm='3'”? 最佳答案 我个人希望发布的代码变成“无”,因为两个变量都没有实际使用,因此可以删除。但是,是的,现代编译器(gcc、clang、msvc等)应该

c++ - 我什么时候不需要 typedef?

遇到一些代码阅读typedefenumeEnum{c1,c2}tagEnum;typedefstruct{inti;doubled;}tagMyStruct;我听说这些结构来自C。在C++中你可以很容易地写enumeEnum{c1,c2};structMyStruct{inti;doubled;};这是真的吗?您什么时候需要第一个变体? 最佳答案 首先,这两个声明在C和C++中都是合法的。但是,在C中,它们的语义略有不同。(特别是,您稍后引用该结构的方式会有所不同)。要理解的关键概念是,在C中,结构存在于单独的命名空间中。所有内置类